"""
Case Type   : 服务端工具
Case Name   : 验证gsql工具功能
Create At   : 2024.10.8
Owner       : wang-tianjing1
Description :
    1.显示帮助信息
    2.显示版本号信息
Expect      :
    1.显示正确
    2.显示正确
History     :
"""
import unittest
import os
from yat.test import Node
from yat.test import macro
from testcase.utils.Constant import Constant
from testcase.utils.Logger import Logger
from testcase.utils.CommonSH import CommonSH
from testcase.utils.Common import Common


class Tools(unittest.TestCase):
    def setUp(self):
        self.log = Logger()
        self.log.info(f'-----{os.path.basename(__file__)} start-----')
        self.primary_node = Node('PrimaryDbUser')
        self.constant = Constant()
        self.commonsh = CommonSH()
        self.common = Common()

    def test_server_tools1(self):
        text = '-------step1:显示帮助信息;except:显示正确--------'
        self.log.info(text)
        cmd_list = ['-?', '--help']
        for cmd in cmd_list:
            check_cmd1 = f'''source {macro.DB_ENV_PATH}
                                gsql {cmd}'''
            self.log.info(check_cmd1)
            msg1 = self.primary_node.sh(check_cmd1).result()
            self.log.info(msg1)
            parameter = ('-d,', '--dbname=DBNAME', '-f,', '--file=FILENAME', '-c,', '--command=COMMAND', '-l,', '--list',
                         '-v,', '--set=', '-V,', '--version', '-?,', '--help', '--variable=NAME=VALUE', '-C,',
                         '--enable-client-encryption', '-e,', '--echo-queries', '-a,',
                         '--echo-all', '-1', ' --single-transaction', '-L,', '--log-file=FILENAME', '-E',
                         '--echo-hidden', '-k', '--with-key=KEY', '-m', '--maintenance',
                         '-n,', '--no-libedit', '-o', '--output=FILENAME', '-q', '--quiet', '-s', '--single-step',
                         '-S', '--single-line', '-A', '--no-align', '-F', '--field-separator=STRING', '-H', '--html',
                         '-P', '--pset=VAR[=ARG]', '-R,', '--record-separator=STRING', '-r', '-t', '--tuples-only',
                         '-T', '--table-attr=TEXT', '-x', '--expanded', '-z', '--field-separator-zero', '-0',
                         '--record-separator-zero', '-2', '--pipeline', 'h', '--host=HOSTNAME', 'p',
                         '--port=PORT', '-U,', '--username=USERNAME', '-W,', '--password=PASSWORD')
            for i in parameter:
                self.assertIn(i, msg1, '执行失败:' + text)

        text = f'-----step2：查看数据库版本 expect:成功-----'
        self.log.info(text)
        cmd = f"source {macro.DB_ENV_PATH};" \
              f"gsql -V"
        self.log.info(cmd)
        msg = self.common.get_sh_result(self.primary_node, cmd)
        self.assertIn('compiled', msg, '执行失败:' + text)


    def tearDown(self):
        self.log.info('--------------无需清理环境-------------------')
        self.log.info(f'-----{os.path.basename(__file__)} end------')
